# 关系运算符

"""
 关系运算符： 比较操作数之间的关系
    < (小于)  > (大于)  <= (小于等于)  >= (大于等于)  == (等于)  != (不等于)
"""

"""
1.
    关系运算符对应的表达式，值是 布尔 类型
    表达式符合要求，为真
    表达式不符合要求，为假
"""
# 数字比较大小
# a = 10
# b = 29
# print(a > b)  # 结果是 False
# print(a < b)  # 结果是 True
# print(a >= b)  # 结果是 False
# print(a <= b)  # 结果是 True
# print(a == b)  # 结果是 False
# print(a != b)  # 结果是 True

"""
2.
    关系运算符不光可以针对数字进行比较，还能够比较字符串
    按照-字典序比较
        在英文词典上，单词是按照一定的顺序来排列的，
        先看首字母在字母表上的顺序，谁小，谁就排在前面
        如果首字母相同，依次比较第二个，第三个......
    针对中文进行字符串大小比较，是没有意义的，至少按照默认的字典序来说，是没有意义的！
    因为，在计算机里，表示中文，其实是用多个字节构成的一个比较大的数字来进行比较的。
"""
# # 字符串比较
# a = 'hello'
# b = 'world'
# print(a > b)  # 结果是 False
# print(a < b)  # 结果是 True
# print(a >= b)  # 结果是 False
# print(a <= b)  # 结果是 True
# print(a == b)  # 结果是 False
# print(a != b)  # 结果是 True

"""
3.  
    针对浮点数来说，使用 == 比较相等，存在一定风险
       因为，浮点数在内存中的存储和表示，是可能存在误差的。
       这样的误差在进行算术运算的时候就可能被无线放大，从而导致 == 的判定出现误判。
    
    正确   
    两个比较的浮点数作差，看差值是否小于与预期的误差范围
"""

# print(0.1 + 0.2 == 0.3)  # 结果是 False

# 分开来看看是哪里错误
# print(0.1)
# print(0.2)
# print(0.1 + 0.2)  # 结果是0.30000000000000004。明显与0.3不一样
# print(0.3)
#
# # 正确比较
# a = 0.2 + 0.1
# b = 0.3
# print(-0.000001 < (a - b) < 0.0000001)  # c++不支持这种来连续比较的
